Optical codes encode useful, optically-readable information about the items to which they are attached or otherwise associated. Perhaps the best example of an optical code is the bar code. Bar codes are ubiquitously found on or associated with objects of various types, such as the packaging of retail, wholesale, and inventory goods; retail product presentation fixtures (e.g., shelves); goods undergoing manufacturing; personal or company assets; and documents. By encoding information, a bar code typically serves as an identifier of an object, whether the identification be to a class of objects (e.g., containers of milk) or a unique item (e.g., U.S. Pat. No. 7,201,322). Bar codes consist of alternating bars (i.e., relatively dark areas) and spaces (i.e., relatively light areas). The pattern of alternating bars and spaces and the widths of those bars and spaces represent a string of binary ones and zeros, wherein the width of any particular bar or space is an integer multiple of a specified minimum width, which is called a “module” or “unit.” Thus, to decode the information, a bar code reader must be able to reliably discern the pattern of bars and spaces, such as by determining the locations of edges demarking adjacent bars and spaces from one another, across the entire length of the bar code.
Bar codes are just one example of the many types of optical codes in use today. Bar codes are an example of a one-dimensional or linear optical code, as the information is encoded in one direction—the direction perpendicular to the bars and spaces. Higher-dimensional optical codes, such as, two-dimensional matrix codes (e.g., MaxiCode) or stacked codes (e.g., PDF 417), which are also sometimes referred to as “bar codes,” are also used for various purposes.
Two of the more important types of devices that read optical codes are (1) flying-spot scanning readers and (2) imager-based readers. The first of these types historically has been the laser-based bar code reader (also called a “scanner”), which generates a spot from a laser beam and sweeps or scans the spot across a bar code label. A laser-based bar code reader detects reflected and/or refracted laser light from the bars and spaces in a bar code as the laser spot moves across the bar code. An optical detector measures the intensity of the returned light as a function of time or position and generates an electrical signal having an amplitude determined by the intensity of the detected light. As the bar code is scanned, positive-going transitions and negative-going transitions in the electrical signal occur, signifying transitions between bars and spaces in the bar code. The electrical signal can be processed to determine the arrangement of bars and spaces of the scanned bar code. The bar and space information can be provided to a decoding unit to determine whether the bar code is recognized and, if so, to decode the information contained in the bar code.
While scanning laser-based bar code readers have become the standard for many applications, particularly fixed scanners such as those found at high-volume retail checkout registers, laser-based scanners do have some disadvantages. In particular, the laser and motor of a laser-based scanner add to the complexity, cost, bulk, power consumption, and start-up time of the overall system, while decreasing reliability. In fact, the motor used for sweeping the laser spot tends to be one of the least reliable components of a scanner, followed by the laser illumination source.
Imager-based readers operate according to a different principle, compared to laser-based scanners. An imager-based reader utilizes a camera or imager to generate electronic image data (typically in digital form) of an optical code. The image data is then processed to find and decode the optical code. For example, virtual scan line techniques are known techniques for digitally processing an image containing a bar code by looking across an image along a plurality of lines, typically spaced apart and at various angles, somewhat like a laser beam's scan pattern in a laser-based scanner.
Imager-based readers typically can only form images from one perspective usually that of a normal vector out of the face of the imager. However, a few imager-based readers that generate multiple perspectives are known. One such reader is disclosed in the present assignee's U.S. Patent Application Publication No. 2006/0163355, published Jul. 27, 2006, in the names of inventors Olmstead et al., which discloses an embodiment having two cameras to collect two images from two different perspectives for the purpose of mitigating specular reflection. Similarly, U.S. Pat. No. 6,899,272, issued to Krichever et al. on May 31, 2005, discloses one embodiment that utilizes two independent sensor arrays pointed in different directions to collect two image data from two different perspectives. Another embodiment according to the '272 patent utilizes a single camera pointed at a moveable mirror that can switch between two positions to select one of two different imaging directions. Additionally, the present assignee's U.S. Pat. No. 5,814,803, issued to Olmstead et al. on Sep. 29, 1998, depicts in its FIG. 62 a kaleidoscope tunnel formed from two mirrored surfaces, resulting in eight different, rotated versions of the same object (bar code) on a single imager.